#!/usr/bin/env python

"""
An echo server that uses select to handle multiple clients at a time.
Entering any line of input at the terminal will exit the server.
"""

import select
import socket
import sys
import serial

ser = serial.Serial()
ser.port = "/dev/ttyO2"
ser.baudrate = 9600

ser.close()    #ensure port is closed
ser.open()

host = ''
port = 50000
backlog = 5
size = 1024
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind((host,port))
server.listen(1)
input = [server,sys.stdin]
running = 1
while running:
	inputready,outputready,exceptready = select.select(input,[],[])

	for s in inputready:

		if s == server:
			# handle the server socket
			client, address = server.accept()
			input.append(client)

		elif s == sys.stdin:
			# handle standard input
			junk = sys.stdin.readline()
			running = 0

		else:
			# handle all other sockets
			data = s.recv(size)
			if data:
				s.send(data)
				ser.write(data)
			else:
				s.close()
				input.remove(s)
				ser.write('User Disconnected')
				ser.close()
server.close()
ser.close()
